#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>

int main()
{
    //C语言提供的
    printf("hello printf\n");
    fprintf(stdout,"hello fprintf\n");
    const char *s="hello fputs\n";
    fputs(s,stdout);
    // OS提供的
    const char* ss="hello write\n";
    write(1,ss,strlen(ss));
    fflush(stdout);
    fork();
    return 0;
}

// int main()
// {
//     close(0);
//     int fd=open("test1.txt",O_RDONLY);
//     if(fd<0)
//     {
//         perror("open");
//         return 1;
//     }
//     printf("open success,fd:%d\n",fd);
//     char buffer[100];
//     fgets(buffer,sizeof buffer,stdin);
//     printf("read from fd:%d,data:\n%s\n",fd,buffer);
// }

// int main()
// {
//     int fd = open("test1.txt",O_RDONLY);
//     if (fd<0)
//     {
//         perror("open");
//         return 1;
//     }
//     printf("open success,fd:%d\n",fd);
//     char buffer[100];
//     memset(buffer,0,sizeof buffer);
//     read(fd,buffer,sizeof buffer);
//     printf("read from fd:%d,data:\n%s",fd,buffer);
//     close(fd);
//     return 0;
// }

//int main()
// {
//     int fd = open("test1.txt", O_WRONLY|O_CREAT|O_APPEND,0664);
//     if(fd<0)
//     {
//         perror("open");
//         return 1;
//     }
//     printf("open success,fd:%d\n",fd);
//     //const char* s="test write\ntest write\n";
//     //const char* s="O_TRUNC write\n";
//     const char* s="O_APPEND write\n";
//     write(fd,s,strlen(s));
//     close(fd);
//     return 0;
// }

// int main() {
//     FILE *file = fopen("test.txt", "r");
//     if (file == NULL) {
//         perror("Error opening file");
//         return 1;
//     }

//     char name[20];
//     int age;

//     // 从文件中读取数据
//     while(fscanf(file,"%s %d",name,&age)!=EOF)
//     {
//         printf("Name: %s, Age: %d\n", name, age);
//     }
//     return 0;
// }
// int main(int argc,char* argv[])
// {
//     if(argc!=2)
//     {
//         printf("argv error\n");
//         return 1;
//     }
//     FILE* fp=fopen(argv[1],"r");
//     if(fp==NULL)
//     {
//         perror("fopen");
//         return 1;
//     }
//     char line[100];
//     while(fgets(line,sizeof line,fp)!=NULL)
//     {
//         printf("%s",line);
//     }
//     fclose(fp);
//     return 0;
// }

// int main()
// {
//     FILE* fp=fopen("test.txt","w");
//     if(fp==NULL)
//     {
//         perror("fopen");
//         return 1;
//     }
//     const char *s1="test fwrite\n";
//     fwrite(s1,strlen(s1),1,fp);
//     const char *s2="test fputs\n";
//     fprintf(fp,"%s",s2);
//     const char *s3="test fputc\n";
//     fputs(s3,fp);
//     return 0;
// }

// int main()
// {
//     FILE* fp=fopen("test.txt","a");
//     if(fp==NULL)
//     {
//         perror("fopen");
//         return 1;
//     }
//     fprintf(fp,"Append only mode1\n");
//     fclose(fp);

//     FILE* fp2=fopen("test.txt","a+");
//     if(fp2==NULL)
//     {
//         perror("fopen");
//         return 1;
//     }
//     fseek(fp2,0,SEEK_SET);
//     char buffer[100];
//     fgets(buffer,sizeof buffer,fp2);
//     printf("Read from fp2: %s",buffer);
//     fclose(fp2);
//     return 0;
// }